home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / cg.lha / cg / test-m / Main.mi < prev    next >
Text File  |  1992-11-24  |  3KB  |  122 lines

  1. MODULE Main;
  2.  
  3. FROM System    IMPORT System;
  4. FROM Checks    IMPORT ErrorCheck;
  5. FROM Strings    IMPORT tString, ArrayToString;
  6. FROM Idents    IMPORT MakeIdent;
  7. FROM IO        IMPORT tFile, ReadOpen, ReadClose, WriteOpen, WriteClose, CloseIO;
  8. FROM StdIO    IMPORT WriteS, WriteI, WriteC, WriteNl;
  9. FROM Tree    IMPORT tTree, nNode1, nNode2, BeginTree, CloseTree, QueryTree,
  10.             WriteTree, ReadTree, PutTree, GetTree, CopyTree, TraverseTreeTD,
  11.             TraverseTreeBU, CheckTree, ReleaseTree, ReleaseTreeModule;
  12.  
  13. VAR n, n1, n2, n3, n4, n5, Root1, Root2, Root3: tTree;
  14.     f: tFile;
  15.     i: INTEGER;
  16.     s: tString;
  17.  
  18. PROCEDURE PrintMark (t: tTree);
  19.    BEGIN
  20.       WriteI (t^.Node.Mark, 0);
  21.       WriteC (' ');
  22.    END PrintMark;
  23.  
  24. BEGIN
  25.    BeginTree;
  26.  
  27.    n1 := nNode2 ();
  28.    n2 := nNode2 ();
  29.    n3 := nNode1 ();
  30.    n4 := nNode1 ();
  31.    n5 := nNode1 ();
  32.  
  33.    n1^.Node.Mark := 1;
  34.    n2^.Node.Mark := 2;
  35.    n3^.Node.Mark := 3;
  36.    n4^.Node.Mark := 4;
  37.    n5^.Node.Mark := 5;
  38.  
  39.    ArrayToString ("1", s); n1^.Node.Ident := MakeIdent (s);
  40.    ArrayToString ("2", s); n2^.Node.Ident := MakeIdent (s);
  41.    ArrayToString ("3", s); n3^.Node.Ident := MakeIdent (s);
  42.    ArrayToString ("4", s); n4^.Node.Ident := MakeIdent (s);
  43.    ArrayToString ("5", s); n5^.Node.Ident := MakeIdent (s);
  44.  
  45.    n1^.Node.Hex := 1;
  46.    n2^.Node.Hex := 2;
  47.    n3^.Node.Hex := 3;
  48.    n4^.Node.Hex := 4;
  49.    n5^.Node.Hex := 5;
  50.  
  51.    n := n1;
  52.    n1^.Node2.Child1 := n2;
  53.    n1^.Node2.Child2 := n2;
  54.    n2^.Node2.Child1 := n3;
  55.    n2^.Node2.Child2 := n5;
  56.    n3^.Node1.Child1 := n4;
  57.    n4^.Node1.Child1 := n3;
  58.    n5^.Node1.Child1 := n5;
  59.  
  60.    f := WriteOpen    ("a");
  61.    ErrorCheck        ("WriteOpen (a)", f);
  62.    WriteS        ("WriteOpen (a)"); WriteNl;
  63.    WriteTree        (f, n);
  64.    WriteClose        (f);
  65.  
  66.    f := ReadOpen    ("a");
  67.    ErrorCheck        ("ReadOpen (a)", f);
  68.    WriteS        ("ReadOpen (a)"); WriteNl;
  69.    Root1 := ReadTree    (f);
  70.    ReadClose        (f);
  71.  
  72.    f := WriteOpen    ("b");
  73.    ErrorCheck        ("WriteOpen (b)", f);
  74.    WriteS        ("WriteOpen (b)"); WriteNl;
  75.    PutTree        (f, Root1);
  76.    WriteClose        (f);
  77.  
  78.    f := ReadOpen    ("b");
  79.    ErrorCheck        ("ReadOpen (b)", f);
  80.    WriteS        ("ReadOpen (b)"); WriteNl;
  81.    Root2 := GetTree    (f);
  82.    ReadClose        (f);
  83.  
  84.    f := WriteOpen    ("aa");
  85.    ErrorCheck        ("WriteOpen (aa)", f);
  86.    WriteS        ("WriteOpen (aa)"); WriteNl;
  87.    WriteTree        (f, Root2);
  88.    WriteClose        (f);
  89.  
  90.    f := WriteOpen    ("bb");
  91.    ErrorCheck        ("WriteOpen (bb)", f);
  92.    WriteS        ("WriteOpen (bb)"); WriteNl;
  93.    PutTree        (f, Root2);
  94.    WriteClose        (f);
  95.  
  96.    Root3 := CopyTree    (Root2);
  97.    f := WriteOpen    ("aaa");
  98.    ErrorCheck        ("WriteOpen (aaa)", f);
  99.    WriteS        ("WriteOpen (aaa)"); WriteNl;
  100.    WriteTree        (f, Root3);
  101.    WriteClose        (f);
  102.  
  103.    i := System        ("set -x; cmp a aa; cmp b bb; cmp a aaa");
  104.    ErrorCheck        ("System", i);
  105.  
  106.    WriteS        ("should print:"); WriteNl;
  107.    WriteS        ("1 2 3 4 5 4 3 5 2 1 "); WriteNl;
  108.    TraverseTreeTD    (Root2, PrintMark);
  109.    TraverseTreeBU    (Root2, PrintMark);
  110.    WriteNl        ;
  111.  
  112.    IF CheckTree        (Root3) THEN END;
  113.  
  114.    WriteS        ("should print:"); WriteNl;
  115.    WriteS        ("4 3 5 2 1 "); WriteNl;
  116.    ReleaseTree        (Root3);
  117.    WriteNl        ;
  118.    ReleaseTreeModule    ;
  119.    CloseTree        ;
  120.    CloseIO;
  121. END Main.
  122.